#include <iostream> 
#include <string.h>
using namespace std;
int map[1000][1000];
void deepfind(int x,int y)
{
	if(map[x][y]==0||map[x][y]==2) return ;
	map[x][y]=2;
	for(int i=1;i<1000;i++){
		if(map[x][i]==1){
			deepfind(i,i);
		}
	}
	
}
int main()
{
	int m,n;
	while(cin>>m){
		if(m==0) break;
		memset(map,0,sizeof(map));
		for(int i=1;i<=m;i++) map[i][i]=1;
		cin>>n;
		for(int i=0;i<n;i++){
			int x,y; 
			cin>>x>>y;
			map[x][y]=1;
			map[y][x]=1;
		}
		int ans=0;
		for(int i=1;i<=m;i++){
			if(map[i][i]==1){
				ans++;
				deepfind(i,i);
			}
		}
		cout<<ans-1<<endl;
	}
}
